perm filename STAT.SAI[RAT,KMC] blob sn#140001 filedate 1975-01-09 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN
C00006 00003	COMMENT  COMPUTE STATS 
C00009 00004	COMMENT  T ROUTINE FOR TESTING THINGS
C00010 ENDMK
C⊗;
BEGIN
REQUIRE "IODEFS[1,BLF]" SOURCE_FILE;


DEFINE ITT(X,N) = "FOR X←1 STEP 1 UNTIL N DO";
DEFINE ∂=" &BLANK1& ";
STRING BLANK1,BLANK10,BLANK20,DELIMSS,FORMFEED;

REAL N1,N2,U1,U2,R1,R2,M;
INTEGER DICE, SW, P, P1, Q, Q1, I, I1, J, J1, K, K1, W, L, T, WFLAG;
INTEGER NEXTL,NEXTA,LI,SSLEN,ATLEN,ERROR,IDUM,INCH1,INCH2,EOF1,EOF2;
REAL R, RR, RRR;
STRING S, SS, SSS,ST,SY,SV,FILENAME,SU,LASTNAME,LASTLINE,ZEROKS,TOPIC,LASTB,AREA;
STRING OUTFILE,RATER,DIM,INTNAME;
STRING S1,S2,S3;
INTEGER ARRAY AA[1:10];
INTEGER ARRAY BB[1:10];
REAL ARRAY CC[1:10];

STRING PROC RIGHTZ(INTEGER L; STRING S);
	RETURN(IF LN(S)<L THEN ZEROKS[1 TO L-LN(S)]&S  ELSE S[1 TO L]);

STRING PROC OFFS(STRING S; INTEGER I);
  BEGIN STRING ST; INTEGER L;  L←LENGTH(S);
  IF I<L THEN ST←S[I+1 TO L] ELSE ST←NULL;  RETURN (ST) ;  END;


BOOLEAN PROC EQS(STRING S);	
	RETURN(IF EQU(S,NULL) OR S=" " THEN TRUE ELSE FALSE);

STRING PROC READIN(INTEGER CHAN);
  BEGIN STRING S; S←INPUT(CHAN,1); 
  WHILE ¬EOF AND EQS(S) DO S←INPUT(CHAN,1);
  IF EOF THEN IF CHAN=INCH1 THEN EOF1←EOF ELSE EOF2←EOF;  RETURN(S);  END;

PROC OUTB(INTEGER CHAN; STRING S);
  BEGIN IF ¬EQU(SV,S[1 TO 6]) THEN BEGIN OUT(OUCH, NULL ↓ ); SV←S[1 TO 6]; END;
  OUT(OUCH, S);  END;


FORMFEED← '14;
ZEROKS←"000000000000";
BLANKS←"                                                   ";
BLANK1←"   ";
BLANK20←"                    ";
BLANK10←"          ";
FLAG←0;
STDBRK(INCH);
DELIMSS← '15 & '12 & '40 & '11 & '14;
SETBREAK(1, '12, '14 & '15, "INS");
SETBREAK(13, '12 & '40, '15, "INS");
SETBREAK(14,DELIMSS & " ?.()","","INR");
SETBREAK(15,"αλ","","INR");

COMMENT  BREAKSETS 17 AND 18 ARE RESERVED FOR TEMPORARY USE;

SW←0; J←0;

COMMENT ********************************* ;

WHILE TRUE DO  BEGIN	"TOPBLOCK"

S←ASK("H FOR HELP -- GO?");

IF EQU(S, "X") THEN DONE "TOPBLOCK";

IF EQU(S, "H") THEN BEGIN

SAY("C for computing mann-whitney stats  "  ↓ ↓ );

END;  COMMENT END OF H ROUTINE;

COMMENT  COMPUTE STATS ;

IF EQU(S,"C") THEN BEGIN "C"

SAY("This computes mann-whitney stats   " ↓ );


FILENAME←ASK("FILIN[CR FOR EXIT]="); 
FILIN(FILENAME);
SS←ASK("FILOUT="); FILOUT(SS);
SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 

WHILE ¬EOF DO BEGIN "FILES"

SAY(NULL ↓ ); SAY("OLD:" ↓ );  SAY("SS="&SS ↓ );
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM); 
  ST←SCAN(SS,7,IDUM); SAY("ST="&ST ↓ );  AA[I]←CVD(ST);  END;
ITT(I,10) SAY(CVS(AA[I]) & " " );

SAY(NULL ↓ ); SAY("NEW:" ↓ ); 
SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM); ST←SCAN(SS,7,IDUM);  BB[I]←CVD(ST);  END;
ITT(I,10) SAY(CVS(BB[I]) & " " );

J←0; SAY(NULL ↓ );  SAY("RANKS:" ↓ );
ITT(I,10) BEGIN  K←AA[I]+BB[I];
  IF K=0 THEN CC[I]←0 ELSE CC[I]←(J+J+K+1)/2;  J←K+J;
  SAY(CVF(CC[I]) & " " );
  END;
SAY(NULL ↓ );

N1←0; ITT(I,10) N1←N1+AA[I]; SAY("N1= " & CVF(N1) ↓ );
N2←0; ITT(I,10) N2←N2+BB[I]; SAY("N2= " & CVF(N2) ↓ );

R1←0; ITT(I,10) R1←AA[I]*CC[I] + R1;  SAY("R1= " & CVF(R1) ↓ );
R2←0; ITT(I,10) R2←BB[I]*CC[I] + R2;  SAY("R2= " & CVF(R2) ↓ );

M←N1*N2;

U1← M + N1*(N1+1)/2 - R1;  SAY("U1= " & CVF(U1) ↓ );
U2← M + N2*(N2+1)/2 - R2;  SAY("U2= " & CVF(U2) ↓ );

SAY("U1+U2= " & CVF(U1+U2) ↓ );
SAY("N1*N2= " & CVF( M ) ↓ );

R←M*(N1+N2+1)/12;

RR←(U1-M/2)*(U1-M/2)/R; SAY("X2= " & CVF(RR) ↓ );
RR←(U2-M/2)*(U2-M/2)/R; SAY("X2= " & CVF(RR) ↓ );


SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 

END "FILES" ;
RELEASE(OUCH); RELEASE(INCH);

END "C" ;
COMMENT  T ROUTINE FOR TESTING THINGS;

IF EQU(S,"T") THEN BEGIN


END;  COMMENT END OF S=T;


END "TOPBLOCK" ;  COMMENT END TO INFINITE LOOP;

ITT(I,3) RELEASE(INCH); ITT(I,3) RELEASE(OUCH);

    	COMMENT END OF PROGRAM;
END;